// 测试在 `the global object` 上定义的函数

const x = 100 ;
// isFinite 用来判断参数是否是有穷大数字
console.log( global.isFinite( x ) ); // true
// 因为在 `the global object` 上定义的属性属于全局属性
// 因此在使用这些属性时不必使用任何前缀
console.log( isFinite( Infinity ) ); // false

const y = x + undefined ;
// isNaN 用于判断参数 是否 "不是一个数字"
console.log( global.isNaN( y ) , isNaN( y ) );

// parseInt 将指定字符串按照指定基数进行解析，并返回相应的十进制整数
let i = global.parseInt( '101010' , 2 );
console.log( i );

// 第二个参数可以是 [ 2 , 36 ] ，默认值是 10
i = parseInt( 'ABCXYZ' , 36 );
console.log( i );

i = parseInt( 'ABC' );
console.log( i );

let str = '3.14';
console.log( str , typeof str );

let float = parseFloat( str );
console.log( float , typeof float );

// URI : Uniform Resource Identifier
const uri = '/user/load?username=张三丰' ;
// 对 URI 进行编码
let encoded = encodeURI( uri );
console.log( encoded );
// 对 URI 进行解码
let decoded = decodeURI( encoded );
console.log( decoded );

encoded = encodeURIComponent( uri );
console.log( encoded );

decoded = decodeURIComponent( encoded );
console.log( decoded );

let expression = ' 5 * ( 6 - 4 ) / 3 ';
// 求表达式的结果
let result = eval( expression );
console.log( result );

expression = `{ id: 2002 , name: '小姜同学' }`;
console.log( expression , typeof expression );

let o = eval( '(' + expression + ')' );
console.log( o , typeof o );
console.log( o.id , o.name );

expression = '[1,2,3,4,5]';
let a = eval( '(' + expression + ')' );
console.log( a , Array.isArray( a ) );